package logic;

import gui.Block;

import java.util.*;

public class Manager {

	private ArrayList<Pestana> 	_Pestannas;
	private ArrayList<Integer> 	_Config;
	private analisisSintactico  _AnalisisSintax;
	private ManagerFile			_ManagerFile;
	
	
	public Manager() {
		_Pestannas 		= new ArrayList<Pestana>();
		_Config			= new ArrayList<Integer>();
		_AnalisisSintax = new analisisSintactico();
		_ManagerFile 	= new ManagerFile();
	}
	
	public void createTreeDebug( Pestana pPestanna){
		Stack<Block> pilaBlocks = new Stack<Block>();
		Block inicio	= pPestanna.getCasillas()[0][0];
		pilaBlocks.push(inicio);
		
		while( ! pilaBlocks.empty() ){
			Block blockActual =  pilaBlocks.pop();
			for(int cntAdy=0; cntAdy<Constantes.CNT_POS; cntAdy++){
				int posX = blockActual.getRow()+(cntAdy%3)-1;
				int posY = blockActual.getCol()+(cntAdy/3)-1;
				if( posX>=0 && posY>=0 &&
					(blockActual.getAdyacencia()[cntAdy] == Constantes.ADY_PIPE_IN	||
					blockActual.getAdyacencia()[cntAdy] == Constantes.ADY_VAR)	&&
					pPestanna.getCasillas()[posX][posY] != null ){
					blockActual.addHijo( pPestanna.getCasillas()[posX][posY] );
					pilaBlocks.push( pPestanna.getCasillas()[posX][posY] );
				}
			}
		}
	}
	
	public ArrayList<Pestana> getPestannas() {
		return _Pestannas;
	}

	public ArrayList<Integer> getConfig() {
		return _Config;
	}

	public analisisSintactico getAnalisisSintax() {
		return _AnalisisSintax;
	}

	public ManagerFile getManagerFile() {
		return _ManagerFile;
	}

	public void set_Pestannas(ArrayList<Pestana> pPestannas) {
		this._Pestannas = pPestannas;
	}

	public void set_Config(ArrayList<Integer> pConfig) {
		this._Config = pConfig;
	}

	public void set_AnalisisSintax(analisisSintactico pAnalisisSintax) {
		this._AnalisisSintax = pAnalisisSintax;
	}

	public void set_ManagerFile(ManagerFile pManagerFile) {
		this._ManagerFile = pManagerFile;
	}
	
}
